/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package gladiatormanager;

import java.awt.Point;

/**
 *
 * @author Antti
 */
public class Ruudukko {
    private static Ruutu[][] ruutuMatriisi;
    private Point valittu;
    private Point vuoro;
    
    
    public Ruudukko(int leveys, int korkeus) {
        ruutuMatriisi = new Ruutu[leveys][korkeus];
        for (int x = 0; x < ruutuMatriisi.length; x++) {
            for (int y = 0; y < ruutuMatriisi[x].length; y++) {
                ruutuMatriisi[x][y] = new Ruutu(x, y);
            }
        }
        valittu = null;
        vuoro = null;
    }
    
    
    public void setRuutu(Ruutu ruutu, final int x, final int y) {
        Ruutu r = new Ruutu(ruutu);
        r.setLocation(x, y);
        ruutuMatriisi[x][y] = r;
    }
    
    
    public Ruutu getRuutu(final int x, final int y) {
        return ruutuMatriisi[x][y];
    }
    
    public void vaihdaRuudut(final int x1, final int y1, final int x2, final int y2) {
        Ruutu r1 = new Ruutu(ruutuMatriisi[x1][y1]);
        Ruutu r2 = new Ruutu(ruutuMatriisi[x2][y2]);
        r1.setLocation(x2, y2);
        r2.setLocation(x1, y1);
        ruutuMatriisi[x1][y1] = r2;
        ruutuMatriisi[x2][y2] = r1;
    }
    
    public void lisaaGladiaattori(Gladiaattori g, int x, int y) {
        getRuutu(x, y).setGladiaattori(g);
    }
    
    public void setValittu(final int x, final int y) {
//        valittu = new Ruutu(ruutuMatriisi[x][y]);
//        //this.printInfo();
//        System.out.println(valittu.getX()+", "+valittu.getY());
          valittu = new Point(x, y);
    }
    
    public void setValittu(Point p) {
        valittu = p;
    }
    
    public Ruutu getValittu() {
        if (valittu == null) return null;
        return ruutuMatriisi[(int)valittu.getX()][(int)valittu.getY()];
    }
 
    
    public Point getValittuLocation() {
        return valittu;
    }
    
    public Gladiaattori getValittuGladiaattori() {
        if (valittu == null) return null;
        return getValittu().getGladiaattori();
    }
    
    public Point getVuoroLocation() {
        return vuoro;
    }
    
    public Ruutu getVuoro() {
        if (vuoro == null) return null;
        return ruutuMatriisi[(int)vuoro.getX()][(int)vuoro.getY()];
    }
    
    public Gladiaattori getVuoroGladiaattori() {
        if (vuoro == null) return null;
        return getVuoro().getGladiaattori();
    }
    
    public void setVuoro(final int x, final int y) {
        vuoro = new Point(x, y);
    }
    
    public void setVuoro(Point p) {
        vuoro = p;
    }
   
    
    public void printInfo() {
        for (int y = 0; y < ruutuMatriisi.length; y++) {
            for (int x = 0; x < ruutuMatriisi[y].length; x++) {
                System.out.print("("+ruutuMatriisi[x][y].getX()+", "+ruutuMatriisi[x][y].getY()+")   ");
            }
            System.out.println("");
        }
    }
}